Enable HVM guest VT-d device hotplug via a simple ACPI hotplug device model.
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 15 Feb 2008 14:13:17 +0000 (14:13 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 15 Feb 2008 14:13:17 +0000 (14:13 +0000)
commit3bbf83843ccc4547c839c4cfe05cb70e3dc92a49
treeaa67fdee6d43f1daaa9f4aa3f95636e335528d67
parent1546fd3f23cfb591cf02ef7da72d6e7e908e3504
Enable HVM guest VT-d device hotplug via a simple ACPI hotplug device model.

** Currently only 2 virtual hotplug pci slots(6~7) are created so more
   than 2 vtd dev can't be hotplugged, but we can easily extend it in
   future.

Three new commands are added:
"xm pci-list domid" show the current assigned vtd device, like:
VSlt  domain   bus   slot   func
0x6      0x0  0x02   0x00    0x0

"xm pci-detach" hot remove the specified vtd device by the virtual
slot, like:
xm pci-detach EdwinHVMDomainVtd 6

"xm pci-attach DomainID dom bus dev func [vslot]" hot add a new vtd
device in the vslot. If no vslot specified, a free slot will be picked
up. e.g. to insert '0000:03:00.0':
xm pci-attach EdwinHVMDomainVtd 0 3 0 0

** guest pci hotplug
linux: pls. use 2.6.X and enable ACPI PCI hotplug ( Bus options=> PCI
hotplug => ACPI PCI hotplug driver )
windows: 2000/xp/2003/vista are all okay

Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
26 files changed:
tools/firmware/hvmloader/acpi/dsdt.asl
tools/firmware/hvmloader/acpi/dsdt.c
tools/firmware/hvmloader/acpi/static_tables.c
tools/ioemu/hw/pass-through.c
tools/ioemu/hw/pc.c
tools/ioemu/hw/pci.c
tools/ioemu/hw/piix4acpi.c
tools/ioemu/monitor.c
tools/ioemu/vl.c
tools/ioemu/vl.h
tools/ioemu/xenstore.c
tools/libxc/xc_domain.c
tools/libxc/xenctrl.h
tools/python/xen/xend/XendDomainInfo.py
tools/python/xen/xend/image.py
tools/python/xen/xend/server/DevController.py
tools/python/xen/xend/server/pciif.py
tools/python/xen/xm/main.py
xen/arch/x86/domctl.c
xen/arch/x86/hvm/irq.c
xen/arch/x86/hvm/vmx/vtd/intel-iommu.c
xen/arch/x86/hvm/vmx/vtd/io.c
xen/include/asm-x86/hvm/irq.h
xen/include/asm-x86/iommu.h
xen/include/public/domctl.h
xen/include/public/hvm/ioreq.h